package com.baidu.utils;

import java.util.UUID;

/**
 * 用于生成ID的工具类
 * @author nijun
 */
public class IdUtils {

    /**
     * 获取固定长度的字符串，长度不够在前面补充0
     *
     * @param str
     * @param length
     * @return
     */
    public static String getFixedLengthStr(String str, int length) {
        if (str==null||"".equals(str)) {
            return null;
        }
        if (str.length() < length) {
            for (int i = 0; i < length; i++) {
                str = "0" + str;
                if (str.length() == length) {
                    break;
                }
            }
        }
        return str;
    }

    /**
     * 全球唯一码，时间空间的唯一性，
     * 根据时间戳(纳秒级)+全局唯一的IEEE机器识别号(MAC..)+时钟序列(自增序列数)+随机数(Random 子类 SecureRandom 强伪随机数据类产生)
     * @param idPrefix
     * @return
     */
    public static String generate(String idPrefix) {
        return idPrefix + UUID.randomUUID().toString();
    }


    /**
     * 时间戳+随机数（w级）
     * @param idPrefix
     * @return
     */
    public static String generateId(String idPrefix) {
        String str = (int) (Math.random() * 10000) + "";
        return idPrefix + System.currentTimeMillis() + getFixedLengthStr(str, 4);
    }

    public static void main(String[] args) {
        System.out.println(IdUtils.generate(""));
        System.out.println(IdUtils.generateId(""));
    }

}